package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * List集合
 * List集合的特点:有序且可以重复
 * 提供了一套可以通过下标操作元素的方法。
 * 常用的实现类:
 * java.util.ArrayList:内部使用数组实现
 * java.util.LinkedList:内部使用链表实现
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
//        List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);
        /*
            E get(int index)
            获取给定下标位置对应的元素
         */
        String s = list.get(2);
        System.out.println(s);
        //普通的for循环也可以用于遍历List集合
        for(int i=0;i<list.size();i++){
            s = list.get(i);
            System.out.println(s);
        }
        /*
            E set(int index,E e)
            将给定元素设置到指定位置，返回值为该位置原有元素
         */
        String old = list.set(2,"six");
        System.out.println(list);
        System.out.println(old);


        /*
            利用get,set方法，翻转集合
         */
        //[five,four,six,two,one]
//        String e = list.get(0);//e:one
//        e = list.set(list.size()-1-0,e);//e:five
//        list.set(0,e);
//
//        e = list.get(1);//e:two
//        e = list.set(list.size()-1-1,e);//e:four
//        list.set(1,e);

        for(int i=0;i<list.size()/2;i++){
            String e = list.get(i);
            e = list.set(list.size()-1-i,e);
            list.set(i,e);
        }
        //[five,four,six,two,one]
        System.out.println(list);

        //java.util.Collections是集合的工具类，类似于Arrays
        Collections.reverse(list);
        System.out.println(list);

    }
}



